home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / webalizer / README < prev    next >
Text File  |  2004-02-16  |  90KB  |  1,672 lines

  1. The Webalizer - A web server log file analysis tool
  2. Copyright 1997-2000 by Bradford L. Barrett (brad@mrunix.net)
  3.  
  4. Distributed under the GNU GPL.  See the files "COPYING" and
  5. "Copyright" supplied with the distribution for additional info.
  6.  
  7.  
  8. What is The Webalizer?
  9. ----------------------
  10.  
  11. The Webalizer is a web server log file analysis program which produces
  12. usage statistics in HTML format for viewing with a browser.  The results
  13. are presented in both columnar and graphical format, which facilitates
  14. interpretation.  Yearly, monthly, daily and hourly usage statistics are
  15. presented, along with the ability to display usage by site, URL, referrer,
  16. user agent (browser), search string, entry/exit page, username and country
  17. (some information is only available if supported and present in the log
  18. files being processed).  Processed data may also be exported into most
  19. database and spreadsheet programs that support tab delimited data formats.
  20.  
  21. The Webalizer supports CLF (common log format) log files, as well as
  22. Combined log formats as defined by NCSA and others, and variations
  23. of these which it attempts to handle intelligently.  In addition, wu-ftpd
  24. xferlog formatted logs and squid proxy logs are supported.
  25.  
  26. Gzip compressed logs may now be used as input directly.  Any log filename
  27. that ends with a '.gz' extension will be assumed to be in gzip format and
  28. uncompressed on the fly as it is being read.  In addition, the Webalizer
  29. also supports DNS lookup capabilities if enabled at compile time.  See
  30. the file DNS.README for additional information.
  31.  
  32. This documentation applies to The Webalizer Version 2.01
  33.  
  34. Running the Webalizer
  35. ---------------------
  36.  
  37. The Webalizer was designed to be run from a Unix command line prompt or
  38. as a cron job.  There are several command line options which will modify
  39. the results it produces, and configuration files can be used as well.
  40. The format of the command line is:
  41.  
  42. webalizer [options ...] [log-file]
  43.  
  44. Where 'options' can be one or more of the supported command line
  45. switches described below.  'log-file' is the name of the log file
  46. to process (see below for more detailed information).  If a dash
  47. ("-") is specified for the log-file name, STDIN will be used.
  48.  
  49.  
  50. Once executed, the general flow of the program follows:
  51.  
  52. o A default configuration file is scanned for.  A file named
  53.   'webalizer.conf' is searched for in the current directory, and if
  54.   found, it's configuration data is parsed.  If the file is not
  55.   present in the current directory,  the file '/etc/webalizer.conf'
  56.   is searched for and, if found, is used instead.
  57.  
  58. o Any command line arguments given to the program are parsed.  This
  59.   may include the specification of a configuration file, which is
  60.   processed at the time it is encountered.
  61.  
  62. o If a log file was specified, it is opened and made ready for
  63.   processing.  If no log file was given, or the filename '-' is
  64.   specified on the command line, STDIN is used for input.
  65.  
  66. o If an output directory was specified, the program does a 'chdir' to
  67.   that directory in preparation for generating output.  If no output
  68.   directory was given, the current directory is used.
  69.  
  70. o If a non-zero number of DNS Children processes were specified, they
  71.   will be started, and the specified log file will be processed,
  72.   either creating or updateing the specified DNS cache file.
  73.  
  74. o If no hostname was given, the program attempts to get the hostname
  75.   using a uname system call.  If that fails, 'localhost' is used.
  76.  
  77. o A history file is searched for.  This file keeps previous month
  78.   totals used on the main index.html page.  The default file is
  79.   named 'webalizer.hist', kept in the specified output directory,
  80.   however may be changed using the "HistoryName" configuration file
  81.   keyword.
  82.  
  83. o If incremental processing was specified, a data file is searched for
  84.   and loaded if found, containing the 'internal state' data of the
  85.   program at the end of a previous run.  The default file is named
  86.   'webalizer.current', kept in the specified output directory, however
  87.   may be changed using the "IncrementalName" configuration file keyword.
  88.  
  89. o Main processing begins on the log file.  If the log spans multiple
  90.   months, a separate HTML document is created for each month.
  91.  
  92. o After main processing, the main 'index.html' page is created, which
  93.   has totals by month and links to each months HTML document.
  94.  
  95. o A new history file is saved to disk, which includes totals generated
  96.   by The Webalizer during the current run.
  97.  
  98. o If incremental processing was specified, a data file is written that
  99.   contains the 'internal state' data at the end of this run.
  100.  
  101.  
  102. Incremental Processing
  103. ----------------------
  104.  
  105. Version 1.2x of The Webalizer adds incremental run capability.  Simply
  106. put, this allows processing large log files by breaking them up into
  107. smaller pieces, and processing these pieces instead.  What this means
  108. in real terms is that you can now rotate your log files as often as you
  109. want, and still be able to produce monthly usage statistics without the
  110. loss of any detail.  This is accomplished by saving and restoring all
  111. relevant internal data to a disk file between runs.  Doing so allows the
  112. program to 'start where it left off' so to speak, and allows the
  113. preservation of detail from one run to the next.
  114.  
  115. Some special precautions need to be taken when using the incremental
  116. run capability of The Webalizer.  Configuration options should not be
  117. changed between runs, as that could cause corruption of the internal
  118. stored data.  For example, changing the MangleAgents level will cause
  119. different representations of user agents to be stored, producing invalid
  120. results in the user agents section of the report.  If you need to change
  121. configuration options, do it at the end of the month after normal
  122. processing of the previous month and before processing the current month.
  123. You may also want to delete the 'webalizer.current' file as well (or
  124. whatever name was specified using the "IncrementalName" configuration
  125. option).
  126.  
  127. The Webalizer also attempts to prevent data duplication by keeping
  128. track of the timestamp of the last record processed.  This timestamp
  129. is then compared to current records being processed, and any records
  130. that were logged previous to that timestamp are ignored.  This, in
  131. theory, should allow you to re-process logs that have already been
  132. processed, or process logs that contain a mix of processed/not yet
  133. processed records, and not produce duplication of statistics.  The
  134. only time this may break is if you have duplicate timestamps in two
  135. separate log files... any records in the second log file that do have
  136. the same timestamp as the last record in the previous log file processed,
  137. will be discarded as if they had already been processed.  There are
  138. lots of ways to prevent this however, for example, stopping the web
  139. server before rotating logs will prevent this situation.  This setup
  140. also necessitates that you always process logs in chronological order,
  141. otherwise data loss will occur as a result of the timestamp compare.
  142.  
  143.  
  144. Output Produced
  145. ---------------
  146.  
  147. The Webalizer produces several reports (html) and graphics for each
  148. month processed.  In addition, a summary page is generated for the
  149. current and previous months (up to 12), a history file is created
  150. and if incremental mode is used, the current month's processed data.
  151. The exact location and names of these files can be changed using
  152. configuration files and command line options.  The files produced,
  153. (default names) are:
  154.  
  155. index.html              - Main summary page (extension may be changed)
  156. usage.png               - Yearly graph displayed on the main index page
  157. usage_YYYYMM.html       - Monthly summary page (extension may be changed)
  158. usage_YYYYMM.png        - Monthly usage graph for specified month/year
  159. daily_usage_YYYYMM.png  - Daily usage graph for specified month/year
  160. hourly_usage_YYYYMM.png - Hourly usage graph for specified month/year
  161. site_YYYYMM.html        - All sites listing (if enabled)
  162. url_YYYYMM.html         - All urls listing (if enabled)
  163. ref_YYYYMM.html         - All referrers listing (if enabled)
  164. agent_YYYYMM.html       - All user agents listing (if enabled)
  165. search_YYYYMM.html      - All search strings listing (if enabled)
  166. webalizer.hist          - Previous month history (may be changed)
  167. webalizer.current       - Incremental Data (may be changed)
  168. site_YYYYMM.tab         - tab delimited sites file
  169. url_YYYYMM.tab          - tab delimited urls file
  170. ref_YYYYMM.tab          - tab delimited referrers file
  171. agent_YYYYMM.tab        - tab delimited user agents file
  172. user_YYYYMM.tab         - tab delimited usernames file
  173. search_YYYYMM.tab       - tab delimited search string file
  174.  
  175. The yearly (index) report shows statistics for a 12 month period, and
  176. links to each month.  The monthly report has detailed statistics for
  177. that month with additional links to any URL's and referrers found.
  178. The various totals shown are explained below.
  179.  
  180. Hits
  181.  
  182.   Any request made to the server which is logged, is considered a 'hit'.
  183. The requests can be for anything... html pages, graphic images, audio
  184. files, CGI scripts, etc...  Each valid line in the server log is
  185. counted as a hit.  This number represents the total number of requests
  186. that were made to the server during the specified report period.
  187.  
  188. Files
  189.  
  190.   Some requests made to the server, require that the server then send
  191. something back to the requesting client, such as a html page or graphic
  192. image.  When this happens, it is considered a 'file' and the files
  193. total is incremented.  The relationship between 'hits' and 'files' can
  194. be thought of as 'incoming requests' and 'outgoing responses'.
  195.  
  196. Pages
  197.  
  198.   Pages are, well, pages!  Generally, any HTML document, or anything
  199. that generates an HTML document, would be considered a page.  This
  200. does not include the other stuff that goes into a document, such as
  201. graphic images, audio clips, etc...  This number represents the number
  202. of 'pages' requested only, and does not include the other 'stuff' that
  203. is in the page.  What actually constitutes a 'page' can vary from
  204. server to server.  The default action is to treat anything with the
  205. extension '.htm', '.html' or '.cgi' as a page.  A lot of sites will
  206. probably define other extensions, such as '.phtml', '.php3' and '.pl'
  207. as pages as well.  Some people consider this number as the number of
  208. 'pure' hits... I'm not sure if I totally agree with that viewpoint.
  209. Some other programs (and people :) refer to this as 'Pageviews'.
  210.  
  211. Sites
  212.  
  213.   Each request made to the server comes from a unique 'site', which can
  214. be referenced by a name or ultimately, an IP address.  The 'sites'
  215. number shows how many unique IP addresses made requests to the server
  216. during the reporting time period.  This DOES NOT mean the number of
  217. unique individual users (real people) that visited, which is impossible
  218. to determine using just logs and the HTTP protocol (however, this
  219. number might be about as close as you will get).
  220.  
  221. Visits
  222.  
  223.   Whenever a request is made to the server from a given IP address
  224. (site), the amount of time since a previous request by the address
  225. is calculated (if any).  If the time difference is greater than a
  226. pre-configured 'visit timeout' value (or has never made a request before),
  227. it is considered a 'new visit', and this total is incremented (both
  228. for the site, and the IP address).  The default timeout value is 30
  229. minutes (can be changed), so if a user visits your site at 1:00 in
  230. the afternoon, and then returns at 3:00, two visits would be registered.
  231. Note: in the 'Top Sites' table, the visits total should be discounted
  232. on 'Grouped' records, and thought of as the "Minimum number of visits"
  233. that came from that grouping instead.  Note: Visits only occur on
  234. PageType requests, that is, for any request whose URL is one of the
  235. 'page' types defined with the PageType option.  Due to the limitation
  236. of the HTTP protocol, log rotations and other factors, this number
  237. should not be taken as absolutely accurate,  rather, it should be
  238. considered a pretty close "guess".
  239.  
  240. KBytes
  241.  
  242.   The KBytes (kilobytes) value shows the amount of data, in KB, that
  243. was sent out by the server during the specified reporting period.  This
  244. value is generated directly from the log file, so it is up to the
  245. web server to produce accurate numbers in the logs  (some web servers
  246. do stupid things when it comes to reporting the number of bytes).  In
  247. general, this should be a fairly accurate representation of the amount
  248. of outgoing traffic the server had, regardless of the web servers
  249. reporting quirks.
  250.  
  251. Note: A kilobyte is 1024 bytes, not 1000 :)
  252.  
  253. Top Entry and Exit Pages
  254.  
  255.   The Top Entry and Exit tables give a rough estimate of what URL's
  256. are used to enter your site, and what the last pages viewed are.
  257. Because of limitations in the HTTP protocol, log rotations, etc...
  258. this number should be considered a good "rough guess" of the actual
  259. numbers, however will give a good indication of the overall trend in
  260. where users come into, and exit, your site.
  261.  
  262.  
  263. Command Line Options
  264. --------------------
  265.  
  266. The Webalizer supports many different configuration options that will
  267. alter the way the program behaves and generates output.  Most of these
  268. can be specified on the command line, while some can only be specified
  269. in a configuration file. The command line options are listed below,
  270. with references to the corresponding configuration file keywords.
  271.  
  272. --------------------------------------------------------------------------
  273.  
  274. General Options
  275. ---------------
  276.  
  277. -h        Display all available command line options and exit program.
  278.  
  279. -v        Display program version and exit program.
  280.  
  281. -d        Display additional 'debugging' information for errors and
  282.           warnings produced during processing.  This normally would
  283.           not be used except to determine why you are getting all those
  284.           errors and wanted to see the actual data.  Normally The
  285.           Webalizer will just tell you it found an error, not the
  286.           actual data.  This option will display the data as well.
  287.           Config file keyword: Debug
  288.  
  289. -F        Specify that the log being used is a ftp log.  Normally, the
  290.           Webalizer expects to find a valid CLF or Combined format
  291.           we server log file.  This option allows you to process wu-ftpd
  292.           xferlogs as well.
  293.           Config file keyword: LogType
  294.  
  295. -f        Fold out of sequence log records back into analysis, by
  296.           treating them as if they were the same date/time as the
  297.           last good record.  Normally, out of sequence log records
  298.           are ignored.  If you run apache, don't worry about this.
  299.           Config file keyword: FoldSeqErr
  300.  
  301. -i        Ignore history file.  USE WITH CAUTION.  This causes The
  302.           Webalizer to ignore any existing history file produced from
  303.           previous runs and generate it's output from scratch.  The
  304.           effect will be as if The Webalizer is being run for the
  305.           first time and any previous statistics will be lost (although
  306.           the HTML documents, if any, will not be deleted) on the main
  307.           index.html (yearly) web page.
  308.           Config file keyword: IgnoreHist
  309.  
  310. -p        Preserve state (incremental processing).  This allows the
  311.           processing of partial logs in increments.  At the end of
  312.           the program, all relevant internal data is saved, so that
  313.           it may be restored the next time the program is run.  This
  314.           allows sites that must rotate their logs more than once a
  315.           month to still be able to use The Webalizer, and not worry
  316.           about having to gather and feed an entire months logs to
  317.           the program at the end of the month.  See the section on
  318.           "Incremental Processing" below for additional information.
  319.           The default is to not perform incremental processing.  Use
  320.           this command line option to enable the feature.
  321.           Config file keyword: Incremental
  322.  
  323. -q        Quiet mode.  Normally, The Webalizer will produce various
  324.           messages while it runs letting you know what it's doing.
  325.           This option will suppress those messages.  It should be
  326.           noted that this WILL NOT suppress errors and warnings, which
  327.           are output to STDERR.
  328.           Config file keyword: Quiet
  329.  
  330. -Q        ReallyQuiet mode.  This allows suppression of _all_ messages
  331.           generated by The Webalizer, including warnings and errors.
  332.           Useful when The Webalizer is run as a cron job.
  333.           Config file keyword: ReallyQuiet
  334.  
  335. -T        Display timing information.  The Webalizer keeps track of the
  336.           time it begins and ends processing, and normally displays the
  337.           total processing time at the end of each run.  If quiet mode
  338.           (-q or 'Quiet yes' in configuration file) is specified, this
  339.           information is not displayed.  This option forces the display
  340.           of timing totals if quiet mode has been specified, otherwise
  341.           it is redundant and will have no effect.
  342.           Config file keyword: TimeMe
  343.  
  344. -c file   This option specifies a configuration file to use.  Configuration
  345.           files allow greater control over how The Webalizer behaves, and
  346.           there are several ways to use them.  As of version 0.98, The
  347.           Webalizer searches for a default configuration file in the
  348.           current directory named "webalizer.conf", and if not found,
  349.           will search in the /etc/ directory for a file of the same name.
  350.           In addition, you may specify a configuration file to use with
  351.           this command line option.
  352.  
  353. -n name   This option specifies the hostname for the reports generated.
  354.           The hostname is used in the title of all reports, and is also
  355.           prepended to URL's in the reports.  This allows The Webalizer
  356.           to be run on log files for 'virtual' web servers or web servers
  357.           that are different than the machine the reports are located on,
  358.           and still allows clicking on the URL's to go to the proper
  359.           location.  If a hostname is not specified, either on the
  360.           command line or in a configuration file, The Webalizer attempts
  361.           to determine the hostname using a 'uname' system call.  If this
  362.           fails, "localhost" will be used as the hostname.
  363.           Config file keyword: HostName
  364.  
  365. -o dir    This options specifies the output directory for the reports.
  366.           If not specified here or in a configuration file, the current
  367.           default directory will be used for output.
  368.           Config file keyword: OutputDir
  369.  
  370. -x name   This option allows the generated pages to have an extension
  371.           other than '.html', which is the default.  Do not include the
  372.           leading period ('.') when you specify the extension.
  373.           Config file keyword: HTMLExtension
  374.  
  375. -P name   Specify the file extensions for 'pages'.  Pages (sometimes
  376.           called 'PageViews') are normally html documents and CGI
  377.           scripts that display the whole page, not just parts of it.
  378.           Some system will need to define a few more, such as 'phtml',
  379.           'php3' or 'pl' in order to have them counted as well.  The
  380.           default is 'htm*' and 'cgi' for web logs and 'txt' for ftp.
  381.           Config file keyword: PageType
  382.  
  383. -t name   This option specifies the title string for all reports.  This
  384.           string is used, in conjunction with the hostname (if not blank)
  385.           to produce the actual title.  If not specified, the default of
  386.           "Usage Statistics for" will be used.
  387.           Config file keyword: ReportTitle
  388.  
  389. -Y        Supress Country graph.  Normally, The Webalizer produces
  390.           country statistics in both Graph and Columnar forms.  This
  391.           option will suppress the Country Graph from being generated.
  392.           Config file keyword: CountryGraph
  393.  
  394. -G        Supress hourly graph.  Normally, The Webalizer produces
  395.           hourly statistics in both Graph and Columnar forms.  This
  396.           option will suppress the Hourly Graph only from being generated.
  397.           Config file keyword: HourlyGraph
  398.  
  399. -H        Supress Hourly statistics.  Normally, The Webalizer produces
  400.           hourly statistics in both Graph and Columnar forms.  This
  401.           option will suppress the Hourly Statistics table only from
  402.           being generated.
  403.           Config file keyword: HourlyStats
  404.  
  405. -L        Disable Graph Legends.  The color coded legends displayed on
  406.           the in-line graphs can be disabled with this option.  The
  407.           default is to display the legends.
  408.           Config file keyword: GraphLegend
  409.  
  410. -l num    Graph Lines.  Specify the number of background reference
  411.           lines displayed on the in-line graphics produced.  The default
  412.           is 2 lines, however can range anywhere from zero ('0') for
  413.           no lines, up to 20 lines (looks funny!).
  414.           Config file keyword: GraphLines
  415.  
  416. -P name   Page type.  This is the extension of files you consider to
  417.           be pages for Pages calculations (sometimes called 'pageviews').
  418.           The default is 'htm*' and 'cgi' (plus whatever HTMLExtension
  419.           you specified if it is different).  Don't use a period!
  420.  
  421. -m num    Specify a 'visit timeout'.  Visits are calculated by looking at
  422.           the time difference between the current and last request made
  423.           by a specific host.  If the difference is greater that the
  424.           visit timeout value, the request is considered a new visit.
  425.           This value is specified in number of seconds.  The default
  426.           is 30 minutes (1800).
  427.           Config file keyword: VisitTimeout
  428.  
  429. -M num    Mangle user agent names.  Normally, The Webalizer will keep
  430.           track of the user agent field verbatim.  Unfortunately, there are
  431.           a ton of different names that user agents go by, and the field
  432.           also reports other items such as machine type and OS used. For
  433.           Example, Netscape 4.03 running on Windows 95 will report a
  434.           different string than Netscape 4.03 running on Windows NT, so even
  435.           though they are the same browser type, they will be considered
  436.           as two totally different browsers by The Webalizer.  For that
  437.           matter, Netscape 4.0 running on Windows NT will report different
  438.           names if one is run on an Alpha and the other on an Intel
  439.           processor!  Internet Exploder is even worse, as it reports itself
  440.           as if it were Netscape and you have to search the given string a
  441.           little deeper to discover that it is really MSIE!  In order to
  442.           consolidate generic browser types, this option will cause The
  443.           Webalizer to 'mangle' the user agent field, attempting to
  444.           consolidate generic browser types. There are 6 levels that can be
  445.           specified, each producing different levels of detail.  Level 5
  446.           displays only the browser name (MSIE or Mozilla) and the major
  447.           version number.  Level 4 will also display the minor version
  448.           number (single decimal place).  Level 3 will display the minor
  449.           version number to two decimal places.  Level 2 will add any
  450.           sub-level designation (such as Mozilla/3.01Gold or MSIE 3.0b).
  451.           Level 1 will also attempt to add the system type.  The default
  452.           Level 0 will disable name mangling and leave the user agent
  453.           field unmodified, producing the greatest amount of detail.
  454.           Configuration file keyword: MangleAgents
  455.  
  456. -g num    This option allows you to specify the level of domains name
  457.           grouping to be performed.  The numeric value represents the
  458.           level of grouping, and can be thought of as the 'number of
  459.           dots' to be displayed.  The default value of 0 disables any
  460.           domain name grouping.
  461.           Configuration file keyword: GroupDomains
  462.  
  463. -D name   This allows the specification of a DNS Cache file name.  This
  464.           filename MUST be specified if you have dns lookups enabled
  465.           (using the -N command line switch or DNSChildren configuration
  466.           keyword).  The filename is relative to the default output
  467.           directory if an absolute path is not specified (ie: starts
  468.           with a leading '/').  This option is only available if DNS
  469.           support was enabled at compile time, otherwise an 'Invalid
  470.           Keyword' error will be generated.  See the DNS.README file
  471.           for additional information regarding DNS lookups.
  472.  
  473. -N num    Number of DNS child processes to use for reverse DNS lookups.
  474.           If specified, a DNSCache name MUST be specified also.  If you
  475.           do not wish a DNS cache file to be generated, specify a value
  476.           of zero ('0') to disable it.  This does not prevent using an
  477.           existing cache file, only the generation of one at run time.
  478.           See the DNS.README file for additional information regarding
  479.           DNS lookups.
  480.  
  481.  
  482. Hide Options
  483. ------------
  484.  
  485. The following options take a string argument to use as a comparison
  486. for matching.  Except for the IndexAlias option, the string argument
  487. can be plain text, or plain text that either starts or ends with the
  488. wildcard character '*'.
  489.  
  490. For Example:
  491.  
  492. Given the string "yourmama/was/here", the arguments "was", "*here" and
  493. "your*" will all produce a match.
  494.  
  495.  
  496. -a name   This option allows hiding of user agents (browsers) from the
  497.           "Top User Agents" table in the report.  This option really
  498.           isn't too useful as there are a zillion different names that
  499.           current browsers go by, depending where they were obtained,
  500.           however you might have some particular user agents that hit
  501.           your site a lot that you would like to exclude from the list.
  502.           You must have a web server that includes user agents in it's
  503.           log files for this option to be of any use.  In addition, it
  504.           is also useless if you disable the user agent table in the
  505.           report (see the -A command line option or "TopAgents"
  506.           configuration file keyword). You can specify as many of these
  507.           as you want on the command line.  The wildcard character '*'
  508.           can be used either in front of or at the end of the string.
  509.           (ie: Mozilla/4.0* would match anything that starts with the
  510.           string "Mozilla/4.0").
  511.           Config file keyword: HideAgent
  512.  
  513. -r name   This option allows hiding of referrers from the "Top Referrer"
  514.           table in the report.  Referrers are URL's, either on your own
  515.           local site or a remote site, that referred the user to a URL
  516.           on your web server.  This option is normally used to hide
  517.           your own server from the table, as your own pages are usually
  518.           the top referrers to your own pages (well, you get the idea).
  519.           You must have a web server that includes referrer information
  520.           in the log files for this option to be of any use.  In addition,
  521.           it is also useless if you disable the referrers table in the
  522.           report (see the -R command line option or "TopReferrers"
  523.           configuration file keyword).  You can specify as many of these
  524.           as you like on the command line.
  525.           Config file keyword: HideReferrer
  526.  
  527. -s name   This option allows hiding of sites from the "Top Sites" table
  528.           in the report.  Normally, you will only want to hide your own
  529.           domain name from the report, as it usually is one of the top
  530.           sites to visit your web server.  This option is of no use if
  531.           you disable the top sites table in the report (see the -S
  532.           command line option or "TopSites" configuration file option).
  533.           Config file keyword: HideSite
  534.  
  535. -X        This causes all individual sites to be hidden, which results
  536.           in only grouped sites to be displayed on the report.
  537.           Config file keyword: HideAllSites
  538.  
  539. -u name   This option allows hiding of URL's from the "Top URL's" table
  540.           in the report.  Normally, this option is used to hide images,
  541.           audio files and other objects your web server dishes out that
  542.           would otherwise clutter up the table.  This option is of no
  543.           use if you disable the top URL's table in the report (see the
  544.           -U command line option or "TopURLs" configuration file keyword).
  545.           Config file keyword: HideURL
  546.  
  547. -I name   This option allows you to specify additional index.html aliases.
  548.           The Webalizer usually strips the string 'index.' from URL's
  549.           before processing, which has the effect of turning a URL such
  550.           as /somedir/index.html into just /somedir/ which is really the
  551.           same URL and should be treated as such.  This option allows you
  552.           to specify _additional_ strings that are to be treated the same
  553.           way.  Use with care, improper use could cause unexpected results.
  554.           For example, if you specify the alias string of 'home', a URL
  555.           such as /somedir/homepages/brad/home.html would be converted
  556.           into just /somedir/ which probably isn't what was intended.
  557.           This option is useful if your web server uses a different default
  558.           index page other than the standard 'index.html' or 'index.htm',
  559.           such as 'home.html' or 'homepage.html'.  The string specified
  560.           is searched for _anywhere_ in the URL, so "home.htm" would
  561.           turn both "/somedir/home.htm" and "/somedir/home.html" into
  562.           just "/somedir/".  Go easy on this one, each string specified
  563.           will be scanned for in EVERY log record, so if you specify a
  564.           bunch of these, you will notice degraded performance.  Wildcards
  565.           are not allowed on this one.
  566.           Config file keyword: IndexAlias
  567.  
  568. Table Size Options
  569. ------------------
  570.  
  571. -e num    This option specifies the number of entries to display in the
  572.           "Top Entry Pages" table.  To disable the table, use a value of
  573.           zero (0).
  574.           Config file keyword: TopEntry
  575.  
  576. -E num    This option specifies the number of entries to display in the
  577.           "Top Exit Pages" table.  To disable the table, use a value of
  578.           zero (0).
  579.           Config file keyword: TopExit
  580.  
  581. -A num    This option specifies the number of entries to display in the
  582.           "Top User Agents" table.  To disable the table, use a value of
  583.           zero (0).
  584.           Config file keyword: TopAgents
  585.  
  586. -C num    This option specifies the number of entries to display in the
  587.           "Top Countries" table.  To disable the table, use a value of
  588.           zero (0).
  589.           Config file keyword: TopCountries
  590.  
  591. -R num    This option specifies the number of entries to display in the
  592.           "Top Referrers" table.  To disable the table, use a value of
  593.           zero (0).
  594.           Config file keyword: TopReferrers
  595.  
  596. -S num    This option specifies the number of entries to display in the
  597.           "Top Sites" table.  To disable the table, use a value of
  598.           zero (0).
  599.           Config file keyword: TopSites
  600.  
  601. -U num    This option specifies the number of entries to display in the
  602.           "Top URL's" table.  To disable the table, use a value of
  603.           zero (0).
  604.           Config file keyword: TopURLs
  605.  
  606. --------------------------------------------------------------------------
  607.  
  608.  
  609. CONFIGURATION FILES
  610. -------------------
  611.  
  612. The Webalizer allows configuration files to be used in order to simplify
  613. life for all.  There are several ways that configuration files are accessed
  614. by the Webalizer.  When The Webalizer first executes, it looks for a
  615. default configuration file named "webalizer.conf" in the current directory,
  616. and if not found there, will look for "/etc/webalizer.conf".  In addition,
  617. configuration files may be specified on the command line with the '-c'
  618. option.  There are lots of different ways you can combine the use of
  619. configuration files and command line options to produce various results.
  620. The Webalizer always looks for and reads configuration options from a
  621. default configuration file before doing anything else.  Because of this,
  622. you can override options found in the default file by use of additional
  623. configuration files specified on the command line or command line options
  624. themselves.  If you specify a configuration file on the command line, you
  625. can override options in it by additional command line options which follow.
  626. For example, most users will most likely want to create the default file
  627. /etc/webalizer.conf and place options in it to specify the hostname, log
  628. file, table options, etc...  At the end of the month when a different log
  629. file is to be used (the end of month log), you can run The Webalizer as
  630. usual, but put the different filename on the end of the command line, which
  631. will override the log file specified in the configuration file.  It should
  632. be noted that you cannot override some configuration file options by the
  633. use of command line arguments.  For example, if you specify "Quiet yes" in
  634. a configuration file, you cannot override this with a command line argument,
  635. as the command line option only _enables_ the feature (-q option).
  636.  
  637. The configuration files are standard ASCII text files that may be created
  638. or edited using any standard editor.  Blank lines and lines that begin
  639. with a pound sign ('#') are ignored.  Any other lines are considered to
  640. be configuration lines, and have the form "Keyword Value", where the
  641. 'Keyword' is one of the currently available configuration keywords defined
  642. below, and 'Value' is the value to assign to that particular option.  Any
  643. text found after the keyword up to the end of the line is considered the
  644. keyword's value, so you should not include anything after the actual value
  645. on the line that is not actually part of the value being assigned.  The
  646. file "sample.conf" provided with the distribution contains lots of useful
  647. documentation and examples as well.  It should be noted that you do not
  648. have to use any configuration files at all, in which case, default values
  649. will be used (which should be sufficient for most sites).
  650.  
  651. --------------------------------------------------------------------------
  652.  
  653. General Configuration Keywords
  654. ------------------------------
  655.  
  656. LogFile       This defines the log file to use. It should be a fully qualified
  657.               name (ie: contain the path), but relative names will work as
  658.               well.  If not specified, the logfile defaults to STDIN. 
  659.  
  660. LogType       This specified the log file type being used.  Normally, The
  661.               Webalizer processes web logs in either CLF or Combined format.
  662.               You may also process wu-ftpd xferlog formatted logs, or squid
  663.               proxy logs by setting the appropriate type using this keyword.
  664.               Values may be either 'clf', 'ftp' or 'squid'.  Ensure that you
  665.               specify the proper file type, otherwise you will be presented
  666.               with a long stream of 'invalid record' messages ;)
  667.               Command line argument: -F
  668.  
  669. OutputDir     This defines the output directory to use for the reports.  If
  670.               it is not specified, the current directory is used.
  671.               Command line argument: -o
  672.  
  673. HistoryName   Allows specification of a history path/filename if desired.
  674.               The default is to use the file named 'webalizer.hist', kept
  675.               in the normal output directory (OutputDir above).  Any name
  676.               specified is relative to the normal output directory unless
  677.               an absolute path name is given (ie: starts with a '/').
  678.  
  679. ReportTitle   This specifies the title to use for the generated reports.
  680.               It is used in conjunction with the hostname (unless blank)
  681.               to produce the final report titles.  If not defined, the
  682.               default of "Usage Statistics for" is used.
  683.               Command line argument: -t
  684.  
  685. HostName      This defines the hostname.  The hostname is used in the
  686.               report title as well as being prepended to URL's in the
  687.               "Top URL's" table.  This allows The Webalizer to be run
  688.               on "virtual" web servers, or servers that do not reside
  689.               on the local machine, and allows clicking on the URL to
  690.               go to the right place.  If not specified, The Webalizer
  691.               attempts to get the hostname via a 'uname' system call,
  692.               and if that fails, will default to "localhost".
  693.               Command line argument: -n
  694.  
  695. UseHTTPS      Causes the links in the 'Top URL's' table to use 'https://'
  696.               instead of the default 'http://' prefix.  Not much use if
  697.               you run a mix of secure/insecure servers on your machine.
  698.               Only useful if you run the analysis on a secure servers
  699.               logs, and want the links in the table to work properly.
  700.  
  701. Quiet         This allows you to enable or disable informational messages
  702.               while it is running.  The values for this keyword can be
  703.               either 'yes' or 'no'.  Using "Quiet yes" will suppress these
  704.               messages, while "Quiet no" will enable them.  The default
  705.               is 'no' if not specified, which will allow The Webalizer
  706.               to display informational messages.  It should be noted that
  707.               this option has no effect on Warning or Error messages that
  708.               may be generated, as they go to STDERR.
  709.               Command line argument: -q
  710.  
  711. TimeMe        This allows you to display timing information regardless of
  712.               any "quiet mode" specified.  Useful only if you did in fact
  713.               tell the webalizer to be quiet either by using the -q command
  714.               line option or the "Quiet" keyword, otherwise timing stats
  715.               are normally displayed anyway.  Values may be either 'yes'
  716.               or 'no', with the default being 'no'.
  717.               Command line argument: -T
  718.  
  719. GMTTime       This keyword allows timestamps to be displayed in GMT (UTC)
  720.               time instead of local time.  Normally The Webalizer will
  721.               display timestamps in the time-zone of the local machine
  722.               (ie: PST or EDT).  This keyword allows you to specify the
  723.               display of timestamps in GMT (UTC) time instead.  Values
  724.               may be either 'yes' or 'no'.  Default is 'no'.
  725.  
  726. Debug         This tells The Webalizer to display additional information
  727.               when it encounters Warnings or Errors.  Normally, The
  728.               Webalizer will just tell you it found a bad record or
  729.               field.  This option will enable the display of the actual
  730.               data that produced the Warning or Error as well.  Useful
  731.               only if you start getting lots of Warnings or Errors and
  732.               want to determine the cause.  Values may be either 'yes'
  733.               or 'no', with the default being 'no'.
  734.               Command line argument: -d
  735.  
  736. IgnoreHist    This suppresses the reading of a history file.  USE WITH
  737.               EXTREME CAUTION as the history file is how The Webalizer
  738.               keeps track of previous months.  The effect of this option
  739.               is as if The Webalizer was being run for the very first
  740.               time, and any previous data is discarded.  Values may be
  741.               either 'yes' or 'no', with the default being 'no'.
  742.               Command line argument: -i
  743.  
  744. FoldSeqErr    Allows log records that are out of sequence to be folded
  745.               back into the analysis, by treating them as if they had
  746.               the same date/time as the last good record.  Normally,
  747.               out of sequence log records are simply ignored.  If you
  748.               run apache, don't worry about this.
  749.  
  750. VisitTimeout  Set the 'visit timeout' value.  Visits are determined by
  751.               looking at the time difference between the current and last
  752.               request made by a specific site.  If the difference in time
  753.               is greater than the visit timeout value, the request is
  754.               considered a new visit.  The value is in number of seconds,
  755.               and defaults to 30 minutes (1800).
  756.               Command line argument: -m
  757.  
  758. PageType      Allows you to define the 'page' type extension.  Normally,
  759.               people consider HTML and CGI scripts as 'pages'.  This
  760.               option allows you to specify what extensions you consider
  761.               a page.  Default is 'htm*' and 'cgi' for web logs, and
  762.               'txt' for ftp logs.
  763.               Command line argument: -P
  764.  
  765. GraphLegend   Enable/disable the display of color coded legends on the
  766.               produced graphs.  Default is 'yes', to display them.
  767.               Command line argument: -L
  768.  
  769. GraphLines    Specify the number of background reference lines to display
  770.               on produced graphs.  The default is 2.  To disable the use
  771.               of background lines, use zero ('0').
  772.               Command line argument: -l
  773.  
  774. CountryGraph  This keyword is used to either enable or disable the creation
  775.               and display of the Country Usage graph.  Values may be either
  776.               'yes' or 'no', with the default being 'yes'.
  777.               Command line argument: -Y
  778.  
  779. DailyGraph    This keyword is used to either enable or disable the creation
  780.               and display of the Daily Usage graph.  Values may be either
  781.               'yes' or 'no', with the default being 'yes'.
  782.  
  783. DailyStats    This keyword is used to either enable or disable the creation
  784.               and display of the Daily Usage statistics table.  Values may
  785.               be either 'yes' or 'no', with the default being 'yes'.
  786.  
  787. HourlyGraph   This keyword is used to either enable or disable the creation
  788.               and display of the Hourly Usage graph.  Values may be either
  789.               'yes' or 'no', with the default being 'yes'.
  790.               Command line argument: -G
  791.  
  792. HourlyStats   This keyword is used to either enable or disable the creation
  793.               and display of the Hourly Usage statistics table.  Values may
  794.               be either 'yes' or 'no', with the default being 'yes'.
  795.               Command line argument: -H
  796.  
  797. IndexAlias    This allows additional 'index.html' aliases to be defined.
  798.               Normally, The Webalizer scans for and strips the string
  799.               "index." from URL's before processing them.  This turns a
  800.               URL such as /somedir/index.html into just /somedir/ which
  801.               is really the same URL.  This keyword allows _additional_
  802.               names to be treated in the same fashion for sites that use
  803.               different default names, such as "home.html".  The string
  804.               is scanned for anywhere in the URL, so care should be used
  805.               if and when you define additional aliases.  For example,
  806.               if you were to use an alias such as 'home', the URL
  807.               /somedir/homepages/brad/home.html would be turned into just
  808.               /somedir/ which probably isn't the intended result.  Instead,
  809.               you should have specified 'home.htm' which would correctly
  810.               turn the URL into /somedir/homepages/brad/ like intended.
  811.               It should also be noted that specified aliases are scanned
  812.               for in EVERY log record... A bunch of aliases will noticeably
  813.               degrade performance as each record has to be scanned for
  814.               every alias defined.  You don't have to specify 'index.' as
  815.               it is always the default.
  816.               Command line argument: -I 
  817.  
  818. MangleAgents  The MangleAgents keyword specifies the level of user agent
  819.               name mangling, if any.  There are 6 levels that may be specified,
  820.               each producing a different level of detail displayed.  Level 5
  821.               displays only the browser name (MSIE or Mozilla) and the major
  822.               version number.  Level 4 adds the minor version (single
  823.               decimal place).  Level 3 adds the minor version to two decimal
  824.               places.  Level 2 will also add any sub-level designation
  825.               (such as Mozilla/3.01Gold or MSIE 3.0b).  Level 1 will also
  826.               attempt to add the system type.  The default level 0 will
  827.               leave the user agent field unmodified and produces the
  828.               greatest amount of detail.
  829.               Command line argument: -M
  830.  
  831. SearchEngine  This keyword allows specification of search engines and
  832.               their query strings.  Search strings are obtained from
  833.               the referrer field in the record, and in order to work
  834.               properly, the Webalizer needs to know what query strings
  835.               different search engines use.  The SearchEngine allows
  836.               you to specify the search engine and it's query string
  837.               to parse the search string from.  The line is formatted
  838.               as:  "SearchEngine engine-string query-string"  where
  839.               'engine-string' is a substring for matching the search
  840.               engine with, such as "yahoo.com" or "altavista".  The
  841.               'query-string' is the unique query string that is added
  842.               to the URL for the search engine, such as "search=" or
  843.               "MT=" with the actual search strings appended to the
  844.               end.  There is no command line option for this keyword.
  845.  
  846. Incremental   This allows incremental processing to be enabled or disabled.
  847.               Incremental processing allows processing partial logs without
  848.               the loss of detail data from previous runs in the same month.
  849.               This feature saves the 'internal state' of the program so that
  850.               it may be restored in following runs.  See the section above
  851.               titled "Incremental Processing" for additional information.
  852.               The value may be 'yes' or 'no', with the default being 'no'.
  853.               Command line argument: -p
  854.  
  855. IncrementalName
  856.               Allows specification of the incremental data filename if
  857.               desired.  Normally, the file named "webalizer.current' is
  858.               used, kept in the standard output directory.  If specified,
  859.               filenames are relative to the standard output directory,
  860.               unless an absolute name is given (ie: starts with '/').
  861.  
  862. DNSCache      Specifies the DNS cache filename.  This name is relative
  863.               to the default output directory unless an absolute name
  864.               is given (ie: starts with '/').  See the DNS.README file
  865.               for additional information.
  866.  
  867. DNSChildren   The number of DNS children processes to run in order to
  868.               create/update the DNS cache file.  If specified, the DNS
  869.               cache filename must also be specified (see above).  Use
  870.               a value of zero ('0') to disable.  See the DNS.README
  871.               file for additional information.
  872.  
  873.  
  874. Top Table Keywords
  875. ------------------
  876.  
  877. TopAgents     This allows you to specify how many "Top" user agents are
  878.               displayed in the "Top User Agents" table.  The default
  879.               is 15.  If you do not want to display user agent statistics,
  880.               specify a value of zero (0).  The display of user agents
  881.               will only work if your web server includes this information
  882.               in its log file (ie: a combined log format file).
  883.               Command line argument: -A 
  884.  
  885. AllAgents     Will cause a separate HTML page to be generated for all
  886.               normally visable User Agents.  A link will be added to
  887.               the bottom of the "Top User Agents" table if enabled.
  888.               Value can be either 'yes' or 'no', with 'no' being the
  889.               default.
  890.  
  891. TopCountries  This allows you to specify how many "Top" countries are
  892.               displayed in the "Top Countries" table.  The default is
  893.               30.  If you want to disable the countries table, specify
  894.               a value of zero (0).
  895.               Command line argument: -C 
  896.  
  897. TopReferrers  This allows you to specify how many "Top" referrers are
  898.               displayed in the "Top Referrers" table.  The default is
  899.               30.  If you want to disable the referrers table, specify
  900.               a value of zero (0).  The display of referrer information
  901.               will only work if your web server includes this information
  902.               in its log file (ie: a combined log format file).
  903.               Command line argument: -R 
  904.  
  905. AllReferrers  Will cause a separate HTML page to be generated for all
  906.               normally visable Referrers.  A link will be added to the
  907.               "Top Referrers" table if enabled.  Value can be either
  908.               'yes' or 'no', with 'no' being the default.
  909.  
  910. TopSites      This allows you to specify how many "Top" sites are
  911.               displayed in the "Top Sites" table.  The default is 30.
  912.               If you want to disable the sites table, specify a value
  913.               of zero (0).
  914.               Command line argument: -S 
  915.  
  916. TopKSites     Identical to TopSites, except for the 'by KByte' table.
  917.               Default is 10.  No command line switch for this one.
  918.  
  919. AllSites      Will cause a separate HTML page to be generated for all
  920.               normally visable Sites.  A link will be added to the
  921.               bottom of the "Top Sites" table if enabled.  Value can
  922.               be either 'yes' or 'no', with 'no' being the default.
  923.  
  924. TopURLs       This allows you to specify how many "Top" URL's are
  925.               displayed in the "Top URL's" table.  The default is 30.
  926.               If you want to disable the URL's table, specify a value
  927.               of zero (0).
  928.               Command line argument: -U 
  929.  
  930. TopKURLs      Identical to TopURLs, except for the 'by KByte' table.
  931.               Default is 10.  No command line switch for this one.
  932.  
  933. AllURLs       Will cause a separate HTML page to be generated for all
  934.               normally visable URLs.  A link will be added to the
  935.               bottom of the "Top URLs" table if enabled.  Value can
  936.               be either 'yes' or 'no', with 'no' being the default.
  937.  
  938. TopEntry      Allows you to specify how many "Top Entry Pages" are
  939.               displayed in the table.  The default is 10.  If you
  940.               want to disable the table, specify a value of zero (0).
  941.               Command line argument: -e
  942.  
  943. TopExit       Allows you to specify how many "Top Exit Pages" are
  944.               displayed in the table.  The default is 10.  If you
  945.               want to disable the table, specify a value of zero (0).
  946.               Command line argument: -E
  947.  
  948. TopSearch     Allows you to specify how many "Top Search Strings" are
  949.               displayed in the table.  The default is 20.  If you
  950.               want to disable the table, specify a value of zero (0).
  951.               Only works if using combined log format (ie: contains
  952.               referrer information).
  953.  
  954. TopUsers      This allows you to specify how many "Top" usernames are
  955.               displayed in the "Top Usernames" table.  Usernames are
  956.               only available if you use http authentication on your
  957.               web server, or when processing wu-ftpd xferlogs.  The
  958.               default value is 20.  If you want to disable the Username
  959.               table, specify a value of zero (0).
  960.  
  961. AllUsers      Will cause a separate HTML page to be generated for all
  962.               normally visable usernames.  A link will be added to the
  963.               bottom of the "Top Usernames" table if enabled.  Value
  964.               can be either 'yes' or 'no', with 'no' being the default.
  965.  
  966. AllSearchStr  Will create a separate HTML page to be generated for all
  967.               normally visable Search Strings.  A link will be added
  968.               to the bottom of the "Top Search Strings" table if
  969.               enabled.  Value can be either 'yes' or 'no', with 'no'
  970.               being the default.
  971.  
  972.  
  973. Hide Object Keywords
  974. --------------------
  975.  
  976. These keywords allow you to hide user agents, referrers, sites, URL's
  977. and usernames from the various "Top" tables.  The value for these keywords
  978. are the same as those used in their command line counterparts.  You
  979. can specify as many of these as you want without limit.  Refer to the
  980. section above on "Command Line Options" for a description of the string
  981. formatting used as the value.  Values cannot exceed 80 characters in
  982. length.
  983.  
  984. HideAgent     This allows specified user agents to be hidden from the
  985.               "Top User Agents" table.  Not very useful, since there
  986.               a zillion different names by which browsers go by today,
  987.               but could be useful if there is a particular user agent
  988.               (ie: robots, spiders, real-audio, etc..) that hits your
  989.               site frequently enough to make it into the top user agent
  990.               listing.  This keyword is useless if 1) your log file does
  991.               not provide user agent information or 2) you disable the
  992.               user agent table.
  993.               Command line argument: -a 
  994.  
  995. HideReferrer  This allows you to hide specified referrers from the
  996.               "Top Referrers" table.  Normally, you would only specify
  997.               your own web server to be hidden, as it is usually the
  998.               top generator of references to your own pages.  Of course,
  999.               this keyword is useless if 1) your log file does not include
  1000.               referrer information or 2) you disable the top referrers
  1001.               table.
  1002.               Command line argument: -r 
  1003.  
  1004. HideSite      This allows you to hide specified sites from the "Top
  1005.               Sites" table.  Normally, you would only specify your own
  1006.               web server or other local machines to be hidden, as they
  1007.               are usually the highest hitters of your web site, especially
  1008.               if you have their browsers home page pointing to it.
  1009.               Command line argument: -s 
  1010.  
  1011. HideAllSites  This allows hiding all indvidual sites from the display,
  1012.               which can be useful when a lot of groupings are being
  1013.               used (since grouped records cannot be hidden).  It is
  1014.               particularly useful in conjunction with the GroupDomain
  1015.               feature, however can be useful in other situations as well.
  1016.               Value can be either 'yes' or 'no', with 'no' the default.
  1017.               Command line argument: -X
  1018.  
  1019. HideURL       This allows you to hide URL's from the "Top URL's" table.
  1020.               Normally, this is used to hide items such as graphic files,
  1021.               audio files or other 'non-html' files that are transferred
  1022.               to the visiting user.
  1023.               Command line argument: -u 
  1024.  
  1025. HideUser      This allows you to hide Usernames from the "Top Usernames"
  1026.               table.  Usernames are only available if you use http based
  1027.               authentication on your web server.
  1028.  
  1029.  
  1030. Group Object Keywords
  1031. ---------------------
  1032.  
  1033. The Group* keywords allow object grouping based on Site, URL, Referrer,
  1034. User Agent and Usernames.  Combined with the Hide* keywords, you can
  1035. customize exactly what will be displayed in the 'Top' tables.  For example,
  1036. to only display totals for a particular directory, use a GroupURL and
  1037. HideURL with the same value (ie: '/help/*').  Group processing is only
  1038. done after the individual record has been fully processed, so name mangling
  1039. and site total updates have already been performed.  Because of this, groups
  1040. are not counted in the main site total (as that would cause duplication).
  1041. Groups can be displayed in bold and shaded as well.  Grouped records are
  1042. not, by default, hidden from the report.  This allows you to display a
  1043. grouped total, while still being able to see the individual records, even
  1044. if they are part of the group.  If you want to hide the detail records,
  1045. follow the Group* directive with a Hide* one using the same value.  There
  1046. are no command line switches for these keywords.  The Group* keywords also
  1047. accept an optional label to be displayed instead of the actual value used.
  1048. This label should be separated from the value by at least one whitespace
  1049. character, such as a space or tab character.  See the sample.conf file
  1050. for examples.
  1051.  
  1052. GroupReferrer Allows grouping Referrers.  Can be handy for some of the
  1053.               major search engines that have multiple host names a
  1054.               referral could come from.
  1055.  
  1056. GroupURL      This keyword allows grouping URL's. Useful for grouping
  1057.               complete directory trees.
  1058.  
  1059. GroupSite     This keywords allows grouping Sites.  Most used for
  1060.               grouping top level domains and unresolved IP address
  1061.               for local dial-ups, etc...
  1062.  
  1063. GroupAgent    Groups User Agents.  A handy example of how you could use
  1064.               this one is to use "Mozilla" and "MSIE" as the values for
  1065.               GroupAgent and HideAgent keywords.  Make sure you put the
  1066.               "MSIE" one first.
  1067.  
  1068. GroupDomains  Allows automatic grouping of domains.  The numeric value
  1069.               represents the level of grouping, and can be thought of
  1070.               as 'the number of dots' to display.  A 1 will display
  1071.               second level domains only (xxx.xxx), a 2 will display
  1072.               third level domains (xxx.xxx.xxx) etc...  The default
  1073.               value of 0 disables any domain grouping.
  1074.               Command line argument: -g
  1075.  
  1076. GroupUser     Allows grouping of usernames.  Combined with a group
  1077.               name, this can be handy for displaying statistics on
  1078.               a particular group of users without displaying their
  1079.               real usernames.
  1080.  
  1081. GroupShading  Allows shading of table rows for groups.  Value can be
  1082.               'yes' or 'no', with the default being 'yes'.
  1083.  
  1084. GroupHighlight Allows bolding of table rows for groups.  Value can be
  1085.                'yes' or 'no', with the default being 'yes'.
  1086.  
  1087.  
  1088. Ignore/Include Object Keywords
  1089. ----------------------
  1090.  
  1091. These keywords allow you to completely ignore log records when generating
  1092. statistics, or to force their inclusion regardless of ignore criteria.
  1093. Records can be ignored or included based on site, URL, user agent, referrer
  1094. and username.  Be aware that by choosing to ignore records, the accuracy of
  1095. the generated statistics become skewed, making it impossible to produce
  1096. an accurate representation of load on the web server.  These keywords
  1097. behave identical to the Hide* keywords above, where the value can have
  1098. a leading or trailing wildcard '*'.  These keywords, like the Hide* ones,
  1099. have an absolute limit of 80 characters for their values.  These keywords
  1100. do not have any command line switch counterparts, so they may only be
  1101. specified in a configuration file.  It should also be pointed out that
  1102. using the Ignore/Include combination to selectively exclude an entire
  1103. site while including a particular 'chunk' is _extremely_ inefficient,
  1104. and should be avoided.  Try grep'ing the records into a separate file
  1105. and process it instead.
  1106.  
  1107. IgnoreSite    This allows specified sites to be completely ignored from
  1108.               the generated statistics.
  1109.  
  1110. IgnoreURL     This allows specified URL's to be completely ignored from
  1111.               the generated statistics.  One use for this keyword would
  1112.               be to ignore all hits to a 'temporary' directory where
  1113.               development work is being done, but is not accessible to
  1114.               the outside world.
  1115.  
  1116. IgnoreReferrer This allows records to be ignored based on the referrer
  1117.                field.
  1118.  
  1119. IgnoreAgent   This allows specified User Agent records to be completely
  1120.               ignored from the statistics.  Maybe useful if you really
  1121.               don't want to see all those hits from MSIE :)
  1122.  
  1123. IgnoreUser    This allows specified username records to be completely
  1124.               ignored from the statistics.  Usernames can only be used
  1125.               if you use http authentication on your server.
  1126.  
  1127. IncludeSite   Force the record to be processed based on hostname.  This
  1128.               takes precedence over the Ignore* keywords.
  1129.  
  1130. IncludeURL    Force the record to be processed based on URL.  This takes
  1131.               precedence over the Ignore* keywords.
  1132.  
  1133. IncludeReferrer Force the record to be processed based on referrer.
  1134.                 This takes precedence over the Ignore* keywords.
  1135.  
  1136. IncludeAgent  Force the record to be processed based on user agent.
  1137.               This takes precedence over the Ignore* keywords.
  1138.  
  1139. IncludeUser   Force the record to be processed based on username.
  1140.               Usernames are only available if you use http based
  1141.               authentication on your server.  This takes precedence over
  1142.               the Ignore* keywords.
  1143.  
  1144.  
  1145. Dump Object Keywords
  1146. --------------------
  1147.  
  1148. The Dump* Keywords allow text files to be generated that can then be used
  1149. for import into most database, spreadsheet and other external programs.
  1150. The file is a standard tab delimited text file, meaning that each column
  1151. is separated by a tab (0x09) character.  A header record may be included
  1152. if required, using the 'DumpHeader' keyword.  Since these files contain
  1153. all records that have been processed, including normally hidden records,
  1154. an alternate location for the files can be specified using the 'DumpPath'
  1155. keyword, otherwise they will be located in the default output directory.
  1156.  
  1157. DumpPath      Specifies an alternate location for the dump files.  The
  1158.               default output location will be used otherwise.  The value
  1159.               is the path portion to use, and normally should be an
  1160.               absolute path (ie: has a leading '/' character), however
  1161.               relative path names can be used as well, and will be
  1162.               relative to the output directory location.
  1163.  
  1164. DumpExtension Allows the dump filename extensions to be specified. The
  1165.               default extension is "tab", however may be changed with
  1166.               this option.
  1167.  
  1168. DumpHeader    Allows a header record to be written as the first record
  1169.               of the file.  Value can be either 'yes' or 'no',  with
  1170.               the default being 'no'.
  1171.  
  1172. DumpSites     Dump tab delimited sites file.  Value can be either 'yes'
  1173.               or 'no', with the default being 'no'.   The filename used
  1174.               is site_YYYYMM.tab (YYYY=year, MM=month).
  1175.  
  1176. DumpURLs      Dump tab delimited url file.  Value can be either 'yes' or
  1177.               'no', with the default being 'no'.  The filename used is
  1178.               url_YYYYMM.tab (YYYY=year, MM=month).
  1179.  
  1180. DumpReferrers Dump tab delimited referrer file.  Value can be either
  1181.               'yes' or 'no', with the default being 'no'.  Filename
  1182.               used is ref_YYYYMM.tab (YYYY=year, MM=month).  Referrer
  1183.               information is only available if present in the log
  1184.               file (ie: combined web server log).
  1185.  
  1186. DumpAgents    Dump tab delmited user agent file.  Value can be either
  1187.               'yes' or 'no', with the default being 'no'.  Filename
  1188.               used is agent_YYYYMM.tab (YYYY=year, MM=month).  User
  1189.               agent information is only available if present in the
  1190.               log file (ie: combined web server log).
  1191.  
  1192. DumpUsers     Dump tab delimited username file.  Value can be either
  1193.               'yes' or 'no', with the default being 'no'.  FIlename
  1194.               used is user_YYYYMM.tab (YYYY=year, MM=month).  The
  1195.               username data is only avilable if processing a wu-ftpd
  1196.               xferlog or http authentication is used on the web server
  1197.               and that information is present in the log.
  1198.  
  1199. DumpSearchStr Dump tab delimited search string file.  Value can be
  1200.               either 'yes' or 'no', with the default being 'no'.
  1201.               Filename used is search_YYYYMM.tab (YYYY=year, MM=month).
  1202.               the search string data is only available if referrer
  1203.               information is present in the log being processed and
  1204.               recognized search engines were found and processed.
  1205.  
  1206.  
  1207.  
  1208. HTML Generation Keywords
  1209. ------------------------
  1210.  
  1211. These keywords allow you to customize the HTML code that The Webalizer
  1212. produces, such as adding a corporate logo or links to other web pages.
  1213. You can specify as many of these keywords as you like, and they will be
  1214. used in the order that they are found in the file.  Values cannot exceed
  1215. 80 characters in length, so you may have to break long lines up into two
  1216. or more lines.  There are no command line counterparts to these keywords.
  1217.  
  1218. HTMLExtension  Allows generated pages to use something other than the
  1219.                default 'html' extension for the filenames.  Do not
  1220.                include the leading period ('.') when you specify the
  1221.                extension.
  1222.                Command line argument: -x
  1223.  
  1224. HTMLPre        Allows code to be inserted at the very beginning of the
  1225.                HTML files.  Defaults to the standard HTML 3.2 DOCTYPE
  1226.                record.  Be careful not to include any HTML here, as it
  1227.                is inserted _before_ the <HTML> tag in the file.  Use it
  1228.                for server-side scripting capabilities, such as php3, to
  1229.                insert scripting files and other directives.
  1230.  
  1231. HTMLHead       Allows you to insert HTML code between the <HEAD></HEAD>
  1232.                block.  There is no default.  Useful for adding scripts
  1233.                to the HTML page, such as Javascript or php3, or even
  1234.                just for adding a few META tags to the document.
  1235.  
  1236. HTMLBody       This keyword defines HTML code to be placed immediately
  1237.                after the <HEAD> section of the report, just before the
  1238.                title and "summary period/generated on" lines.  If used,
  1239.                the first HTMLHead line MUST include a <BODY> tag.  Put
  1240.                whatever else you want in subsequent lines, but keep in
  1241.                mind the placement of this code in relation to the title
  1242.                and other aspects of the web page.  Some typical uses
  1243.                are to change the page colors and possibly add a corporate
  1244.                logo (graphic) in the top right.  If not specified, a
  1245.                default <BODY> tag is used that defines page color, text
  1246.                color and link colors (see "sample.conf" file for example).
  1247.  
  1248. HTMLPost       This keyword defines HTML code that is placed after the
  1249.                title and "summary period/generated on" lines, just before
  1250.                the initial horizontal rule <HR> tag.  Normally this keyword
  1251.                isn't needed, but is provided in case you included a large
  1252.                graphic or some other weird formatting tag in the HTMLHead
  1253.                section that needs to be cleaned up or terminated before the
  1254.                main report section.
  1255.  
  1256. HTMLTail       This keyword defines HTML code that is placed at the bottom
  1257.                right side of the report.  It is inserted in a <TABLE> section
  1258.                between table data <TD>..</TD> tags, and is top and right
  1259.                aligned within the table.  Normally this keyword is used to
  1260.                provide a link back to your home page or insert a small
  1261.                graphic at the bottom right of the page.
  1262.  
  1263. HTMLEnd        This allows insertion of closing code, at the very end of
  1264.                the page.  The default is to put the closing </BODY> and
  1265.                </HTML> tags.  If specified, you _must_ specify these tags
  1266.                yourself.
  1267.  
  1268. --------------------------------------------------------------------------
  1269.  
  1270.  
  1271. Notes on Web Log Files
  1272. ----------------------
  1273.  
  1274. The Webalizer supports CLF log formats, which should work for just
  1275. about everyone.  If you want User Agent or Referrer information, you
  1276. need to make sure your web server supplies this information in it's
  1277. log file, and in a format that the Webalizer can understand.  While
  1278. The Webalizer will try to handle many of the subtle variations in
  1279. log formats, some will not work at all.   Most web servers output
  1280. CLF format logs by default.  For Apache, in order to produce the
  1281. proper log format, add the following to the httpd.conf file:
  1282.  
  1283. LogFormat "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\""
  1284.  
  1285. This instructs the Apache web server to produce a 'combined' log
  1286. that includes the referrer and user agent information on the end of
  1287. each record, enclosed in quotes (This is the standard recommended
  1288. by both Apache and NCSA).   Netscape and other web servers have
  1289. similar capabilities to alter their log formats.  (note: the above
  1290. works for apache servers up to V1.2.  V1.3 and higher now have additional
  1291. ways to specify log formats... refer to included documentation).
  1292.  
  1293. Notes on FTP Log Files
  1294. ----------------------
  1295.  
  1296. The Webalizer now supports ftp logs produced by wu-ftpd and others, as
  1297. a standard 'xferlog'.  To process an ftp log, you must either use the
  1298. -Ff command line option or have "LogType ftp" in your configuration file.
  1299. Support for additional formats may be forthcoming, however a future
  1300. version of the Webalizer is in the works that will allow user defined
  1301. log formats, so this will become a non-issue.  It is recommended that
  1302. you create a separate configuration file for ftp analysis, since the
  1303. values used for your web server will most likely not be suited for ftp
  1304. log analysis (ie: page types, hostname, etc.. should be different).
  1305.  
  1306. Because of the difference in web and ftp logs, there are a few limitations:
  1307.  
  1308. o Because there is no concept of a 'response code' in ftp world, response
  1309.   codes are restricted to either 200 (OK) or 206 (Partial Content), based
  1310.   on the completion status found in xferlog (for wu-ftpd, 'i'=incomplete
  1311.   and will generate a 206, 'c'=complete and will generate a 200).  If your
  1312.   ftp server doesn't supply the completion status, all requests will be
  1313.   assigned a response code of 200.  This allows the usage graph to display
  1314.   all transfer requests (hits), and how many of those completed in success
  1315.   (files - ie: 200 response codes).
  1316.  
  1317. o Page totals won't accurately reflect reality, since there isn't really
  1318.   the concept of a 'page' in regards to ftp services.  I have found that
  1319.   setting the PageType value to "README", "FIRST", etc... seems to work
  1320.   fairly well however,  and will give a pretty good indication of how
  1321.   many 'non-binary' files were requested.  Of course, the content of your
  1322.   ftp site will be different, so your results may vary.
  1323.  
  1324. o Visit totals also won't accurately reflect reality, since visits are
  1325.   triggered on PageType requests (see above).  What you usually wind up
  1326.   with is visits=sites in most cases.
  1327.  
  1328. o Entry/Exit pages will not be calculated for ftp logs.
  1329.  
  1330. o For obvious reasons, referrers and user agents are not supported.
  1331.  
  1332. o You _cannot_ analyze both web and ftp logs at the same time.. they must
  1333.   be done separately in different runs.
  1334.  
  1335.  
  1336. Notes on Referrers
  1337. ------------------
  1338.  
  1339. Referrers are weird critters... They take many shapes and forms, which makes
  1340. it much harder to analyze than a typical URL, which at least has some
  1341. standardization.  What is contained in the referrer field of your log
  1342. files varies depending on many factors, such as what site did the referral,
  1343. what type of system it comes from and how the actual referral was generated.
  1344. Why is this?  Well, because a user can get to your site in many ways... They
  1345. may have your site bookmarked in their browser, they may simply type your
  1346. sites URL field in their browser, they could have clicked on a link on some
  1347. remote web page or they may have found your site from one of the many search
  1348. engines and site indexes found on the web.  The Webalizer attempts to deal
  1349. with all this variation in an intelligent way by doing certain things to
  1350. the referrer string which makes it easier to analyze.  Of course, if your
  1351. web server doesn't provide referrer information, you probably don't really
  1352. care and are asking yourself why you are reading this section...
  1353.  
  1354. Most referrer's will take the form of "http://somesite.com/somepage.html",
  1355. which is what you will get if the user clicks on a link somewhere on the
  1356. web in order to get to your site.  Some will be a variation of this, and
  1357. look something like "file:/some/such/sillyname", which is a reference from
  1358. a HTML document on the users local machine.  Several variations of this can
  1359. be used, depending on what type of system the user has, if he/she is on
  1360. a local network, the type of network, etc...  To complicate things even
  1361. more, dynamic HTML documents and HTML documents that are generated by
  1362. CGI scripts or external programs produce lots of extra information which
  1363. is tacked on to the end of the referrer string in an almost infinite number
  1364. of ways.  If the user just typed your URL into their browser or clicked on
  1365. a bookmark, there won't be any information in the referrer field and will
  1366. take the form "-".
  1367.  
  1368. In order to handle all these variations, The Webalizer parses the referrer
  1369. field in a certain way.  First, if the referrer string begins with "http",
  1370. it assumes it is a normal referral and converts the "http://" and following
  1371. hostname to lowercase in order to simplify hiding if desired.  For example,
  1372. the referrer "HTTP://WWW.MyHost.Com/This/Is/A/HTML/Document.html" will become
  1373. "http://www.myhost.com/This/Is/A/HTML/Document.html".  Notice that only the
  1374. "http://" and hostname are converted to lower case... The rest of the
  1375. referrer field is left alone.  This follows standard convention, as the
  1376. actual method (HTTP) and hostname are always case insensitive, while the
  1377. document name portion is case sensitive.
  1378.  
  1379. Referrers that came from search engines, dynamic HTML documents, CGI
  1380. scripts and other external programs usually tack on additional information
  1381. that it used to create the page.  A common example of this can be found
  1382. in referrals that come from search engines and site indexes common on the
  1383. web.  Sometimes, these referrers URL's can be several hundred characters
  1384. long and include all the information that the user typed in to search for
  1385. your site.  The Webalizer deals with this type of referrer by stripping
  1386. off all the query information, which starts with a question mark '?'.
  1387. The Referrer "http://search.yahoo.com/search?p=usa%26global%26link" will
  1388. be converted to just "http://search.yahoo.com/search".
  1389.  
  1390. When a user comes to your site by using one of their bookmarks or by
  1391. typing in your URL directly into their browser, the referrer field is
  1392. blank, and looks like "-".  Most sites will get more of these referrals
  1393. than any other type.  The Webalizer converts this type of referral into
  1394. the string "- (Direct Request)".  This is done in order to make it easier
  1395. to hide via a command line option or configuration file option.  This is
  1396. because the character "-" is a valid character elsewhere in a referrer
  1397. field, and if not turned into something unique, could not be hidden without
  1398. possibly hiding other referrers that shouldn't be.
  1399.  
  1400.  
  1401. Notes on Character Escaping
  1402. ---------------------------
  1403.  
  1404. The HTTP protocol defines certain ways that URL's can look and behave.  To
  1405. some extent, referrer fields follow most of the same conventions.  Character
  1406. escaping is a technique by which non-printable or other non-ASCII (and even
  1407. some ASCII) characters can be used in a URL.  This is done by placing the
  1408. Hexadecimal value of the character in the URL, preceeded by a percent sign '%'.
  1409. Since Hex values are made up of ASCII characters, any character can be
  1410. escaped to ensure only printable ASCII characters are present in the URL.
  1411. Some systems take this concept to the extreme and escape all sorts of stuff,
  1412. even characters that don't need to be escaped.  To deal with this, The
  1413. Webalizer will un-escape URL's and referrers before being processed. For
  1414. Example, the URL "/www.mrunix.net/%7Ebrad/resume.html" is the same URL as
  1415. "/www.mrunix.net/~brad/resume.html", a very common form of a URL to access
  1416. users web pages.  If the URL's were not un-escaped, they would be treated as
  1417. two separate documents, even though they are really one and the same.
  1418.  
  1419.  
  1420. Search String Analysis
  1421. ----------------------
  1422.  
  1423.   The Webalizer will do a minimal analysis on referrer strings that
  1424. it finds, looking for well known search string patterns.  Most of
  1425. the major search engines are supported, such as Yahoo!, Altavista,
  1426. Lycos, etc...  Unfortunately, search engines are always changing
  1427. their internal/CGI query formats, new search engines are coming on
  1428. line every day, and the ability to detect _all_ search strings is
  1429. nearly impossible.  However, it should be accurate enough to give
  1430. a good indication of what users were searching for when they stumbled
  1431. across your site.  Note: as of version 1.31, search engines can now
  1432. be specified within a configuration file.  See the sample.conf file
  1433. for examples of how to specify additional search engines.
  1434.  
  1435.  
  1436.  
  1437. Notes on Visits/Entry/Exit Figures
  1438. ----------------------------------
  1439.  
  1440. The majority of data analyzed and reported on by The Webalizer is
  1441. as accurate and correct as possible based on the input log file.
  1442. However, due to the limitation of the HTTP protocol, the use of
  1443. firewalls, proxy servers, multi-user systems, the rotation of your
  1444. log files, and a myriad of other conditions, some of these numbers
  1445. cannot, without absolute accuracy, be calculated.  In particular,
  1446. Visits, Entry Pages and Exit Pages are suspect to random errors
  1447. due to the above and other conditions.  The reason for this is
  1448. twofold, 1) Log files are finite in size and time interval, and
  1449. 2) There is no way to distinguish multiple individual users apart
  1450. given only an IP address.  Because log files are finite, they have
  1451. a beginning and ending, which can be represented as a fixed time
  1452. period.  There is no way of knowing what happened previous to this
  1453. time period, nor is it possible to predict future events based on
  1454. it.  Also, because it is impossible to distinguish individual users
  1455. apart, multiple users that have the same IP address all appear to
  1456. be a single user, and are treated as such.  This is most common where
  1457. corporate users sit behind a proxy/firewall to the outside world,
  1458. and all requests appear to come from the same location (the address
  1459. of the proxy/firewall itself).  Dynamic IP assignment (used with
  1460. dial-up internet accounts) also present a problem, since the same
  1461. user will appear as to come from multiple places.
  1462.  
  1463. For example, suppose two users visit your server from XYZ company,
  1464. which has their network connected to the Internet by a proxy server
  1465. 'fw.xyz.com'.  All requests from the network look as though they
  1466. originated from 'fw.xyz.com', even though they were really initiated
  1467. from two separate users on different PC's.  The Webalizer would
  1468. see these requests as from the same location, and would record only
  1469. 1 visit, when in reality, there were two.  Because entry and exit
  1470. pages are calculated in conjunction with visits, this situation
  1471. would also only record 1 entry and 1 exit page, when in reality,
  1472. there should be 2.
  1473.  
  1474. As another example, say a single user at XYZ company is surfing
  1475. around your website..  They arrive at 11:52pm the last day of
  1476. the month, and continue surfing until 12:30am, which is now a
  1477. new day (in a new month).  Since a common practice is to rotate
  1478. (save then clear) the server logs at the end of the month, you
  1479. now have the users visit logged in two different files (current
  1480. and previous months).  Because of this (and the fact that the
  1481. Webalizer clears history between months), the first page the
  1482. user requests after midnight will be counted as an entry page.
  1483. This is unavoidable, since it is the first request seen by that
  1484. particular IP address in the new month.
  1485.  
  1486. For the most part, the numbers shown for visits, entry and exit
  1487. pages are pretty good 'guesses', even though they may not be 100%
  1488. accurate.  They do provide a good indication of overall trends,
  1489. and shouldn't be that far off from the real numbers to count much.
  1490. You should probably consider them as the 'minimum' amount possible,
  1491. since the actual (real) values should always be equal or greater
  1492. in all cases.
  1493.  
  1494.  
  1495. Exporting Webalizer Data
  1496. ------------------------
  1497.  
  1498. The Webalizer now has the ability to dump all object tables to tab
  1499. delimited ascii text files, which can then be imported into most
  1500. popular database and spreadsheet programs. The files are not normally
  1501. produced, as on some sites they could become quite large, and are only
  1502. enabled by the use of the Dump* configuration keywords.  The filename
  1503. extensions default to '.tab' however may be changed using the
  1504. 'DumpExtension' keyword.  Since this data contains all items, even
  1505. those normally hidden, it may not be desirable to have them located
  1506. in the output directory where they may be visable to normal web users..
  1507. For this reason, the 'DumpPath' configuration keyword is available,
  1508. and allows the placement of these files somewhere outside the normal
  1509. web server document tree.  An optional 'header' record may be written
  1510. to these files as well, and is useful when the data is to be imported
  1511. into a spreadsheet.. databases will not normally need the header.  If
  1512. enabled, the header is simply the column names as the first record of
  1513. the file, tab separated.
  1514.  
  1515.  
  1516. Log files and The Webalizer
  1517. ---------------------------
  1518.  
  1519. Most sites will choose to have The Webalizer run from cron at specified
  1520. intervals.  Care should be taken to ensure that data is not lost as a
  1521. result of log file rotations.  A suggested practice is to rotate your
  1522. web server logs at the end of each month as close to midnight as possible,
  1523. then have The Webalizer process the 'end of month' log file before running
  1524. statistics on the new, current log.  On our systems, a shell script called
  1525. 'rotate_logs' is run at midnight, the end of each month.  This script file
  1526. looks like:
  1527.  
  1528. ------------------------- file: rotate_logs ------------------------------
  1529. #!/bin/sh
  1530.  
  1531. # halt the server
  1532. kill `cat /var/lib/httpd/logs/httpd.pid`
  1533.  
  1534. # define backup names
  1535. OLD_ACCESS_LOG=/var/lib/httpd/logs/old/access_log.`date +%y%m%d-%H%M%S`
  1536. OLD_ERROR_LOG=/var/lib/httpd/logs/old/error_log.`date +%y%m%d-%H%M%S`
  1537.  
  1538. # make end of month copy for analyzer
  1539. cp /var/lib/httpd/logs/access_log /var/lib/httpd/logs/access_log.backup
  1540.  
  1541. # move files to archive directory
  1542. mv /var/lib/httpd/logs/access_log `echo $OLD_ACCESS_LOG`
  1543. mv /var/lib/httpd/logs/error_log  `echo $OLD_ERROR_LOG`
  1544.  
  1545. # restart web server
  1546. /usr/sbin/httpd
  1547.  
  1548. # compress the archived files
  1549. /bin/gzip $OLD_ACCESS_LOG
  1550. /bin/gzip $OLD_ERROR_LOG
  1551. ------------------------- end of file ------------------------------------
  1552.  
  1553. This script first stops the web server using a 'kill' command.  Apache
  1554. keeps the PID of the server in the file httpd.pid, so we use it as the
  1555. argument for the kill.  Next, it defines some names for the backup files,
  1556. which are basically the name of the files with the date and time appended
  1557. to the end of them.  It then makes a copy of the log file, appended with
  1558. '.backup' in the log directory, moves the current log files to an archive
  1559. directory (/var/lib/httpd/logs/old) and restarts the server.  This setup 
  1560. allows the web server to be down for the minimum amount of time needed,
  1561. which is important for busy sites.  If you don't want to stop the server,
  1562. you can remove the initial 'kill' command, and replace the '/usr/sbin/httpd'
  1563. line with "kill -1 `cat /var/lib/httpd/logs/httpd.pid`" command instead,
  1564. On most web servers, this will cause a restart of the server and create
  1565. the new log files in the process...
  1566.  
  1567. At this point, we have made copies of the previous months logs,  the web
  1568. server is going about it's business as usual, and we have all the time in
  1569. the world to do any other additional processing we want.  The last two
  1570. lines of the script compress the archived logs using the GNU zip program
  1571. (gzip).  Remember, we still have a copy of the log which we can now run
  1572. The Webalizer on without having to do any further processing.
  1573.  
  1574. Next, we define two crontab entries.  The first runs the above 'rotate_logs'
  1575. script at midnight at the end of the month.  The second runs The Webalizer
  1576. on the '.backup' log file created above at 5 minutes after midnight.  This
  1577. gives other end of month processing jobs a chance to run so we don't bog
  1578. the system down too much.  If you have lots of end of month stuff going on,
  1579. you can change the timing to suit your needs.  The crontab entries look
  1580. something like:
  1581.  
  1582. ------------------------- crontab entries --------------------------------
  1583. # Rotate web server logs and run monthly analysis
  1584. 0 0 1 * *       /usr/local/adm/rotate_logs
  1585. 5 0 1 * *       /usr/bin/webalizer -Q /var/lib/httpd/logs/access_log.backup
  1586. ------------------------- end of crontab ---------------------------------
  1587.  
  1588. As you can see, the log rotations occur at midnight, and the analysis
  1589. is done at 5 minutes after.  Once you verify that The Webalizer ran
  1590. successfully, the access_log.backup file can be deleted as it isn't
  1591. needed any more.  If you need to re-run the analysis, you still have
  1592. the compressed archive copy that the shell script created.  In order
  1593. for the above analysis to work properly, you should have already
  1594. created an /etc/webalizer.conf configuration file suitable for your
  1595. site, or otherwise specify configuration options or a configuration
  1596. file on the crontab command line above.
  1597.  
  1598. If you want The Webalizer to be run more often than once a month, you
  1599. can specify additional crontab entries to do this as well.  Care should
  1600. be taken however to ensure that The Webalizer is not running when the
  1601. end of month processing above occurs, or unpredictable results may
  1602. happen (such as an inability to rotate the logs due to a file lock). 
  1603. The easiest way is to run it on the half hour with a crontab entry like:
  1604.  
  1605. 30 * * * *      /usr/bin/webalizer
  1606.  
  1607.  
  1608. Language Support
  1609. ----------------
  1610.  
  1611. Version 1.0x of The Webalizer added language support.  This
  1612. support is only provided at compile time in the form of an
  1613. include file containing all the strings used by The Webalizer.
  1614. The source distribution contains all language files that were
  1615. available at the time, with English being the default as
  1616. that is the only human language I speak fluently, and me
  1617. Espanol es muy malo.  Several people have already indicated
  1618. the desire to do translations into various languages, and as
  1619. I receive the language files, will make them available via
  1620. ftp at ftp://ftp.mrunix.net/pub/webalizer/lang.  Unless there
  1621. happens to be a binary distribution in the language you need,
  1622. you will need to grab the source distribution and compile the
  1623. program yourself. See the file INSTALL that comes in the source
  1624. distribution for information on how to use a language other than
  1625. English.
  1626.  
  1627. It should also be noted that the GD graphics library, used to
  1628. produce the in-line graphics in the output HTML,  doesn't
  1629. support extended character sets, so if you are translating
  1630. the language file, you will no doubt encounter this problem.
  1631.  
  1632. New: You can now specify the language to use when you are building
  1633.      program from source, using the configure script.  Just add
  1634.      --with-language=language_name   , where 'language_name' is the
  1635.      name of a valid language file in the /lang/ directory.  For
  1636.      example, --with-language=french  will build using French as
  1637.      the default language.  You should consult the INSTALL file
  1638.      for additional information on building the program from source.
  1639.  
  1640.  
  1641. Known Issues
  1642. ------------
  1643.  
  1644.  o Memory Usage.  The Webalizer makes liberal use of memory for internal
  1645.     data structures during analysis.  Lack of real physical memory will
  1646.     noticeably degrade performance by doing lots of swapping between memory
  1647.     and disk.  One user who had a rather large log file noticed that The
  1648.     Webalizer took over 7 hours to run with only 16 Meg of memory.  Once
  1649.     memory was increased, the time was reduced to a few minutes.
  1650.  
  1651.  
  1652.  o Performance.  The Hide*, Group*, Ignore*, Include*  and IndexAlias
  1653.     configuration options can cause a performance decrease if lots of
  1654.     them are used.  The reason for this is that every log record must
  1655.     be scanned for each item in each list.  For example, if you are
  1656.     Hiding 20 objects, Grouping 20 more, and Ignoring 5,  each record
  1657.     is scanned, at most, 46 times (20+20+5 + an IndexAlias scan).
  1658.     On really large log files, this can have a profound impact.  It
  1659.     is recommended that you use the least amount of these configuration
  1660.     options that you can, as it will greatly improve performance.
  1661.  
  1662.  
  1663. Final Notes
  1664. -----------
  1665.  
  1666. A lot of time and effort went into making The Webalizer, and to ensure that
  1667. the results are as accurate as possible.  If you find any abnormalities or
  1668. inconsistent results, bugs, errors, ommisions or anything else that doesn't
  1669. look right, please let me know so I can investigate the problem or correct
  1670. the error.  This goes for the minimal documentation as well.  Suggestions
  1671. for future versions are also welcome and appreciated.
  1672.